import { createStore } from 'redux';

/*
  学习目标：reudx核心概念总结
  1. state：保存数据
  2. reducer：负责计算状态的函数
    2.1 reducer是一个纯函数： 固定输入、固定数据
    2.2 不能有任何副作用的代码：❌发请求、操作DOM
    2.3 不能直接修改state
    2.4 👍使用新值覆盖旧值
  3. action：是一个具有type字段的JS对象，描述发生了什么
  4. dispatch：Redux中dispatch是唯一修改state的方法，发起一个动作
  5. 不可变数据： 不能修改到原数据
  6. 单项数据流
*/

function test(state = { count: 0, msg: '123', list: [] }, action) {
  // console.warn('action  ----->  ', action);
  if (action.type === 'add') {
    return {
      ...state,
      count: state.count + 1,
    };
  }

  if (action.type === 'des') {
    return {
      ...state,
      count: state.count - 1,
    };
  }
  return state;
}

const store = createStore(test);

store.dispatch({ type: 'add' });
store.dispatch({ type: 'des' });
console.log('store.getState().count  ----->  ', store.getState().count);
